import { NgModule } from '@angular/core';
import { NzButtonModule } from "ng-zorro-antd/button";
import { CommonModule } from "@angular/common";
import { FormsModule, NgModel, ReactiveFormsModule } from "@angular/forms";
import { NzResultModule } from "ng-zorro-antd/result";
import { NzSegmentedModule } from "ng-zorro-antd/segmented";
import { NzSelectModule } from "ng-zorro-antd/select";
import { NzSkeletonModule } from "ng-zorro-antd/skeleton";
import { NzSliderModule } from "ng-zorro-antd/slider";
import { NzAlertModule } from 'ng-zorro-antd/alert';
import { NzAnchorModule } from 'ng-zorro-antd/anchor';
import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzSpaceModule } from "ng-zorro-antd/space";
import { NzGridModule } from "ng-zorro-antd/grid";
import { NzDividerModule } from "ng-zorro-antd/divider";
import { NzLayoutModule, NzSiderComponent } from "ng-zorro-antd/layout";
import { NzAffixModule } from "ng-zorro-antd/affix";
import { NzMenuDirective, NzMenuModule } from "ng-zorro-antd/menu";
import { NzSwitchModule } from 'ng-zorro-antd/switch';
import { NzDropDownModule } from "ng-zorro-antd/dropdown";
import { NzBreadCrumbModule } from "ng-zorro-antd/breadcrumb";
import { NzPageHeaderModule } from "ng-zorro-antd/page-header";
import { NzStepsModule } from "ng-zorro-antd/steps";
import { HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';

import { NzAvatarModule } from 'ng-zorro-antd/avatar';
import { NzBackTopModule } from 'ng-zorro-antd/back-top';
import { NzBadgeModule } from 'ng-zorro-antd/badge';
import { NzCalendarModule } from 'ng-zorro-antd/calendar';
import { NzCardModule } from 'ng-zorro-antd/card';
import { NzCarouselModule } from 'ng-zorro-antd/carousel';
import { NzCascaderModule } from 'ng-zorro-antd/cascader';
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
import { NzCommentModule } from 'ng-zorro-antd/comment';
import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
import { NzWaveModule } from 'ng-zorro-antd/core/wave';
import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';
import { NzDrawerModule } from 'ng-zorro-antd/drawer';
import { NzEmptyModule } from 'ng-zorro-antd/empty';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzI18nModule } from 'ng-zorro-antd/i18n';
import { NzImageModule } from 'ng-zorro-antd/image';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
import { NzListModule } from 'ng-zorro-antd/list';
import { NzMentionModule } from 'ng-zorro-antd/mention';
import { NzMessageModule } from 'ng-zorro-antd/message';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzNotificationModule } from 'ng-zorro-antd/notification';
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
import { NzPopoverModule } from 'ng-zorro-antd/popover';
import { NzProgressModule } from 'ng-zorro-antd/progress';
import { NzRadioModule } from 'ng-zorro-antd/radio';
import { NzRateModule } from 'ng-zorro-antd/rate';
import { NzSpinModule } from 'ng-zorro-antd/spin';
import { NzStatisticModule } from 'ng-zorro-antd/statistic';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzTabsModule } from 'ng-zorro-antd/tabs';
import { NzTagModule } from 'ng-zorro-antd/tag';
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
import { NzTimelineModule } from 'ng-zorro-antd/timeline';
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
import { NzTransferModule } from 'ng-zorro-antd/transfer';
import { NzTreeModule } from 'ng-zorro-antd/tree';
import { NzTreeViewModule } from 'ng-zorro-antd/tree-view';
import { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';
import { NzUploadModule } from 'ng-zorro-antd/upload';
import { NzResizableModule } from 'ng-zorro-antd/resizable';
import { NzPipesModule } from 'ng-zorro-antd/pipes';
import { NzCodeEditorModule } from 'ng-zorro-antd/code-editor';
import { NzQRCodeModule } from 'ng-zorro-antd/qr-code';
import { NzWaterMarkModule } from 'ng-zorro-antd/water-mark';
import { RouterModule, RouterOutlet } from '@angular/router';
import { httpInterceptorProviders } from './study/interceptor';
import { AdDirective } from './study/angular-base/sunshine-dynamic/Ad.directive';
import { SunshinePermissionDirective } from './study/directives/sunshine-permission.directive';

const commonModule = [
  NzButtonModule, CommonModule, FormsModule, NzResultModule, NzSegmentedModule,
  NzSelectModule, NzSkeletonModule, NzSliderModule,
  NzAlertModule,
  NzAnchorModule,
  NzAutocompleteModule, NzButtonModule, NzIconModule, NzSpaceModule, NzGridModule, NzDividerModule,
  NzLayoutModule, NzSpaceModule, NzAffixModule, NzBreadCrumbModule, NzDropDownModule, NzMenuModule, NzPageHeaderModule,
  NzStepsModule, NzSwitchModule, FormsModule,
  HttpClientModule,
  HttpClientJsonpModule,
  ReactiveFormsModule,
  NzDropDownModule, NzLayoutModule, NzMenuDirective, NzSiderComponent, NzAvatarModule,
  NzAvatarModule, NzBackTopModule, NzBadgeModule, NzCalendarModule, NzCalendarModule,
  NzCardModule, NzCarouselModule, NzCascaderModule, NzCheckboxModule,
  NzCollapseModule, NzCommentModule, NzNoAnimationModule,
  NzWaveModule, NzDatePickerModule, NzDescriptionsModule,
  NzDrawerModule, NzEmptyModule, NzFormModule, NzI18nModule, NzImageModule,
  NzInputModule, NzInputNumberModule, NzListModule, NzMentionModule,
  NzMessageModule, NzModalModule, NzNotificationModule, NzPageHeaderModule,
  NzPaginationModule,
  NzPopconfirmModule, NzPopoverModule, NzProgressModule, NzRadioModule,
  NzRadioModule, NzRateModule, NzSpinModule, NzStatisticModule,
  NzTableModule, NzTabsModule, NzTagModule,
  NzTimePickerModule, NzTimePickerModule, NzTimelineModule, FormsModule,
  NzToolTipModule, NzTransferModule, NzTreeModule, NzTreeViewModule,
  NzTreeSelectModule, NzUploadModule, NzResizableModule, NzQRCodeModule, NzWaterMarkModule,
  NzPipesModule, NzCodeEditorModule, RouterModule
];

@NgModule({
  imports: [commonModule, HttpClientXsrfModule.withOptions({
    cookieName: 'My-Xsrf-Cookie',
    headerName: 'My-Xsrf-Header',
  }),],
  declarations: [AdDirective],
  exports: [commonModule],
  providers: [httpInterceptorProviders],
})
export class SunshineNgZorroAntdModule {

}
